﻿@using MobiShop.Models
@model MobiShop.Models.FindOrderData

@{
    ViewBag.Title = "Quản lý đơn đặt hàng";
    ViewBag.AddCssFile = "<link href=\"" + Url.Content("~/Content/admin/css/CalendarCss.css") + "\" rel=\"stylesheet\" type=\"text/css\" />";

    Layout = "~/Views/Shared/_AdminStart.cshtml";


    List<Order> OrderList = ViewBag.OrderList;
    if (ViewBag.OrderStatusIdSelectedValue == null)
    {
        ViewBag.OrderStatusIdSelectedValue = 0;
    }
    if (ViewBag.VisibleSelectedValue == null)
    {
        ViewBag.VisibleSelectedValue = "true";
    }

    string deleteImage = Url.Content("~/Content/admin/images/") + "delete.png";
    string okImage = Url.Content("~/Content/admin/images/") + "ok.png";
    string img_id_begin = "status_img_";
    string row_id_begin = "row_num_";
    string Css_boxList1 = "boxList1";
    string Css_boxList2 = "boxList2";
    string orderStatusId_begin = "orderStatusId_";
    string receiveDateID_begin = "receiveDate_";
}

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/CalendarScript.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/Validate.js")" type="text/javascript"></script>

<div class="titleForm">
    <h3>Quản lý đơn đặt hàng</h3>
</div>

@{
    string mPrev_image = Url.Content("~/Content/admin/images/prev.gif");
    string mNext_image = Url.Content("~/Content/admin/images/next.gif");
}
<script type="text/javascript">
    mPrev_image = "@mPrev_image";
    mNext_image = "@mNext_image";
</script>
<div id="calendarDiv" class="calendarDiv"></div>


@using (Html.BeginForm("Index", "AdminOrder", new { id = 1 }, FormMethod.Get))
{   
    @Html.ValidationSummary(true)
<div class="boxtCreateCenter" style="width:800px;" >
    <fieldset >
        <legend>Tìm kiếm đơn hàng</legend>
        <table>
            <tr>
                <td>
                    @Html.LabelFor(model => model.Account_id)
                </td>
                <td>
                    @Html.TextBoxFor(model => model.Account_id, new { style = "width:45px;" })
                    @Html.LabelFor(model => model.Account_username)
                    @Html.TextBoxFor(model => model.Account_username, new { style = "width:120px;" })
                    @Html.ValidationMessageFor(model => model.Account_id)
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.receiveName)
                </td>
                <td>
                    @Html.TextBoxFor(model => model.receiveName)

                    @Html.LabelFor(model => model.receiveIdentityCardNumber)
                    @Html.TextBoxFor(model => model.receiveIdentityCardNumber, new { style = "width:90px;" })
                    @Html.ValidationMessageFor(model => model.receiveIdentityCardNumber)
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.receiveAddress)
                </td>
                <td>
                    @Html.TextBoxFor(model => model.receiveAddress)

                    @Html.LabelFor(model => model.receivePhoneNumber)
                    @Html.TextBoxFor(model => model.receivePhoneNumber, new { style = "width:90px;" })
                    @Html.ValidationMessageFor(model => model.receivePhoneNumber)
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.orderDate_From)
                </td>
                <td>
                    @Html.TextBoxFor(model => model.orderDate_From, new { style = "width:90px;" })
                    <input type="button" value="" style="width:25px;" _textboxid="orderDate_From" />
                    @Html.LabelFor(model => model.orderDate_To)
                    @Html.TextBoxFor(model => model.orderDate_To, new { style = "width:90px;" })
                    <input type="button" value="" style="width:25px;" _textboxid="orderDate_To" />
                    @Html.ValidationMessageFor(model => model.orderDate_From)
                    @Html.ValidationMessageFor(model => model.orderDate_To)
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.receiveDate_From)
                </td>
                <td>
                    @Html.TextBoxFor(model => model.receiveDate_From, new { style = "width:90px;" })
                    <input type="button" value="" style="width:25px;" _textboxid="receiveDate_From"/>
                    @Html.LabelFor(model => model.receiveDate_To)
                    @Html.TextBoxFor(model => model.receiveDate_To, new { style = "width:90px;" })
                    <input type="button" value="" style="width:25px;" _textboxid="receiveDate_To"/>
                    @Html.ValidationMessageFor(model => model.receiveDate_From)
                    @Html.ValidationMessageFor(model => model.receiveDate_To)
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.totalPayment_From)
                </td>
                <td>
                    @Html.TextBoxFor(model => model.totalPayment_From, new { style = "width:90px;" })
                    @Html.LabelFor(model => model.totalPayment_To)
                    @Html.TextBoxFor(model => model.totalPayment_To, new { style = "width:90px;" })

                    @Html.ValidationMessageFor(model => model.totalPayment_From)
                    @Html.ValidationMessageFor(model => model.totalPayment_To)
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.OrderStatusId)
                </td>
                <td>
                    @Html.DropDownListFor(model => model.OrderStatusId, AppSetting.Make_Clone(OrderStatusModels.OrderStatusListItem, "0"), new { @style = "width:125px;" })
                </td>
            </tr>
            <tr>
                <td>
                    @Html.LabelFor(model => model.visible)
                </td>
                <td>
                    @Html.DropDownListFor(model => model.visible, AppSetting.VisibleListItem, new { @style = "width:100px;" })
                </td>
            </tr>
            <tr>
                <td>
                    
                </td>
                <td>
                    <input type="submit" value="Tìm kiếm" id="btnSeach" />
                </td>
            </tr>
        </table>
    </fieldset>
</div>
}


@if (OrderList != null)
{
<h3>Tìm được tất cả @ViewBag.SoKetQua kết quả:</h3>
        
    string LienKetRefesh = "/AdminOrder/Index/" + ViewBag.CurrentPage + "?" + ViewBag.QueryString;
        
        <a href="@LienKetRefesh" style="font-size:18px;">Refesh</a>
<div>

    <table cellspacing="1" cellpadding="5">
        <tr class="boxListHeader">
            <th>
                Tài khoản
            </th>
            <th>
                Người nhận
            </th>
            <th>
                Địa chỉ nhận
            </th>
            <th>
                Điện thoại
            </th>
            <th>
                CMND
            </th>
            <th>
                Ngày mua
            </th>
            <th>
                Số tiền
            </th>
            <th>
                Trạng thái
            </th>
            <td>
                Ngày nhận
            </td>
            <th>
                Edit
            </th>
            <th>
                Status
            </th>
        </tr>
        @{
    int i = 0;
    string stypeCSS = "";
            }
            @foreach (var item in OrderList)
            {
                i++;

                if (i % 2 == 0)
                {
                    stypeCSS = Css_boxList1;
                }
                else
                {
                    stypeCSS = Css_boxList2;
                }
                string row_id = row_id_begin + item.id;
                <tr class ="@stypeCSS" id="@row_id" >
                    <td>
                        @Html.ActionLink(item.Account.username, "accountDetails", "Admin", new { id = item.Account.id }, new { target = "_blank" })
                    </td>
                    <td>
                        @item.receiveName
                    </td>
                    <td>
                        @item.receiveAddress
                    </td>
                    <td>
                        @item.receivePhoneNumber
                    </td>
                    <td>
                        @item.receiveIdentityCardNumber
                    </td>
                    <td>
                        @String.Format("{0:dd/MM/yyyy}", item.orderDate)
                    </td>
                    <td>
                        @String.Format("{0:0,0}", item.totalPayment)
                    </td>
                    <td>
                        @Html.DropDownList(orderStatusId_begin + item.id,
                        AppSetting.Make_Clone(OrderStatusModels.OrderStatusListItem, item.orderStatusId.ToString())
                        , new { @class = "_orderStatusId" })
                    </td>
                    <td>
                    @{
                string receiveDateIDspan = receiveDateID_begin + item.id;
                    }
                        <span id="@receiveDateIDspan">
                            @String.Format("{0:dd/MM/yyyy}", item.receiveDate)
                        </span>
                    </td>
                    <td valign="middle" align="center" >
                        <a href="/AdminOrder/Edit/@item.id">
                            <img src="@Url.Content("~/Content/admin/images/ico_edit.png")" 
                            alt="" style="width:20px;border:0px;" title="Click vào để sửa thông tin đơn hàng" />
                        </a>
                    </td>
                    <td valign="middle" align="center" >
            @{
                string status_img_id = img_id_begin + item.id;
                string status_img_FileName = deleteImage;

                if (item.visible != null && item.visible.Value)
                {
                    status_img_FileName = okImage;
                }
            }
                        <img src="@status_img_FileName" class="_status_img"
                        alt="" id="@status_img_id" style="width:20px;cursor:pointer;" title="Click vào để xóa/khôi phục đơn hàng" />
                    </td>
                </tr>
            }
            </table>
            <br />
</div>
    
            //phân trang 
    if (ViewBag.page!= null && (int)ViewBag.page >= 1)
    {
        ViewBag._tongSoTrang = ViewBag.page;
        ViewBag._trangHienTai = ViewBag.CurrentPage;
        ViewBag._MyURL = "/AdminOrder/Index/";
        ViewBag._Query = ViewBag.QueryString;
        ViewBag._UseIdForPaging = true;
    @Html.Partial("_BoPhanTrang")
    }   
    
<span style="font-size:14px;">
<b>Lưu ý:</b>
<br />
Click vào các biểu tượng 
<img src="@deleteImage" alt="" style="width:20px;" />
<img src="@okImage" alt="" style="width:20px;" />
để xóa hoặc khôi phục các đơn hàng
<br />
Click vào biểu tượng
<img src="@Url.Content("~/Content/admin/images/ico_edit.png")" alt="" style="width:20px;border:0px;" />
để thay đổi thông tin đơn hàng
<br />
Ấn vào liên kết Refesh để nhận về trạng thái mới nhất của dữ liệu
<br />
Cột "Ngày mua", "Ngày nhận" định dạng thời gian theo dd/MM/yyyy
</span> 



    
    
<script type="text/javascript">
    var deleteImage = "@deleteImage";
    var okImage = "@okImage";
    var img_id_begin = "@img_id_begin";
    var row_id_begin = "@row_id_begin";
    var Css_boxList1 = "@Css_boxList1";
    var Css_boxList2 = "@Css_boxList2";
    var orderStatusId_begin = "@orderStatusId_begin";
    var OrderStatusIdSelectedValue = "@ViewBag.OrderStatusIdSelectedValue";
    var VisibleSelectedValue = "@ViewBag.VisibleSelectedValue";
    var receiveDateID_begin = "@receiveDateID_begin"; ;


    function Delete_Row(nut) {
        var $nut = $(nut);
        var _id = $nut.attr("id");
        _id = _id.substr(_id.lastIndexOf("_") + 1);

        var row = document.getElementById(row_id_begin + _id);
        if (row != null) {
            var $row = $(row);
            var css_now = Css_boxList1;
            if ($row.hasClass(Css_boxList2))
                css_now = Css_boxList2;
            for (var n = row.nextSibling; n != null; n = n.nextSibling)
                if (n.tagName == "TR") {
                    var $n = $(n);
                    $n.removeClass(Css_boxList1);
                    $n.removeClass(Css_boxList2);
                    $n.addClass(css_now);
                    if (css_now == Css_boxList1)
                        css_now = Css_boxList2;
                    else css_now = Css_boxList1;
                }

            $row.remove();
        }

    }

    function XuLyLoi_VisibleImageClick(nut) {
        alert("Thao tác thất bại.Vui lòng kiểm tra lại đường mạng, ấn refesh để cập nhật thông tin mới nhất!");
        nut.onclick = XuLy_VisibleImageClick;
    }

    function XuLyThanhCong_VisibleImageClick(nut) {
        var $nut = $(nut);
        // tiên hành kiểm tra lại tham số của bộ tìm kiếm visible hiện hành
        // để xác định xem việc thay đổi trang thái có khiến Order bị loại bỏ khỏi kết quả tìm kiếm hay không

        if (VisibleSelectedValue != "") // tiến hành xóa
        {
            Delete_Row(nut);
        } else {
            nut.onclick = XuLy_VisibleImageClick;
            if ($nut.attr("src") == deleteImage)
                $nut.attr("src", okImage)
            else $nut.attr("src", deleteImage)
        }
    }

    function XuLy_VisibleImageClick(e) {
        var $image = $(this);
        var nut = this;
        var _id = $image.attr("id");
        _id = _id.substr(_id.lastIndexOf("_") + 1);

        // đầu tiên, tiến hành bỏ việc bắt sự kiện onlick trên image để tránh người dùng click thêm
        // bởi việc đó có thể gây ra lỗi
        nut.onclick = null;
        // gọi ajax
        $.ajax({
            type: "POST",
            url: "/AJAX/ChangeVisibleStatus",
            data: "OrderId=" + _id,
            success: function (message) {
                if (message != null && message != "") {
                    // xử lý để loại bỏ cái chuỗi quảng cáo vớ vẩn mà thằng somee bơm vô khi up lên host online :(
                    var vitri = message.indexOf("<" + "!" + "--");
                    if (vitri >= 0) {
                        message = message.substr(0, vitri);
                    }
                    //////////
                    if (message == "1") {
                        XuLyThanhCong_VisibleImageClick(nut);
                        return;
                    }
                }
                XuLyLoi_VisibleImageClick(nut);
            },
            error: function () {
                XuLyLoi_VisibleImageClick(nut);
            }
        });
    }

    function XuLyLoi_orderStatusIdChange(nut) {
        alert("Thao tác thất bại.Vui lòng kiểm tra lại đường mạng, ấn refesh để cập nhật thông tin mới nhất!");
        nut.disabled = false;
    }

    function str_00(str) {
        str = "" + str;
        if (str.length < 2) str = "0" + str;
        return str;
    }

    function XuLyThanhCong_orderStatusIdChange(nut, _receiveDate) {
        var $nut = $(nut);
        // tiên hành kiểm tra lại tham số của bộ tìm kiếm visible hiện hành
        // để xác định xem việc thay đổi trang thái có khiến Order bị loại bỏ khỏi kết quả tìm kiếm hay không

        if (OrderStatusIdSelectedValue != "0") // tiến hành xóa
        {
            Delete_Row(nut);
        } else {
            nut.disabled = false;
            if (_receiveDate != null) {
                var chuoi;
                var ngay = new Date(_receiveDate);
                if (ngay == null || isNaN(ngay)) {
                    chuoi = "";
                } else {
                    chuoi = str_00(ngay.getDate()) + "/" + str_00(ngay.getMonth() + 1) + "/" + str_00(ngay.getFullYear());
                }

                var _id = $nut.attr("id");
                _id = _id.substr(_id.lastIndexOf("_") + 1);
                $("#" + receiveDateID_begin + _id).html(chuoi);
            }
        }
    }

    function XuLy_orderStatusIdChange(e) {
        var $nut = $(this);
        var nut = this;
        var _id = $nut.attr("id");
        _id = _id.substr(_id.lastIndexOf("_") + 1);

        nut.disabled = true;
        // gọi ajax
        $.ajax({
            type: "POST",
            url: "/AJAX/ChangeOrderStatusId",
            data: "OrderId=" + _id + "&orderStatusId=" + $nut.val(),
            success: function (message) {
                if (message != null && message != "") {
                    // xử lý để loại bỏ cái chuỗi quảng cáo vớ vẩn mà thằng somee bơm vô khi up lên host online :(
                    var vitri = message.indexOf("<" + "!"+"--");
                    if (vitri >= 0) {
                        message = message.substr(0, vitri);
                    }
                    //////////
                    var $resultXml = $(message);
                    if ($resultXml.length == 1) {
                        var theResult = $resultXml[0];
                        if (theResult.tagName && theResult.tagName == "RESULT") // ok
                        {
                            var _receiveDate = $(message).attr("receiveDate");

                            XuLyThanhCong_orderStatusIdChange(nut, _receiveDate);
                            return;
                        }
                    }
                }
                XuLyLoi_orderStatusIdChange(nut);
            },
            error: function () {
                XuLyLoi_orderStatusIdChange(nut);
            }
        });
    }

    $(document).ready(function (e) {
        $("._status_img").each(function (index, element) {
            this.onclick = XuLy_VisibleImageClick;
        });
        $("._orderStatusId").each(function (index, element) {
            this.onchange = XuLy_orderStatusIdChange;
        });
    });

</script>
    
    
    
 
   
}
else
{
    <div>&nbsp;</div>
}
